package com.itcast.mapper;

import com.itcast.pojo.Goods;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

/**
 * <p>
 *  Mapper 接口
 * </p>
 *
 * @author ${author}
 * @since 2020-06-19
 */
@Repository
@Mapper
public interface GoodsMapper extends BaseMapper<Goods> {

    /*新品推荐*/
    List<Goods> newGoods(@Param("search") String search);
    /*热销产品*/
    List<Goods> selectproductsrank(@Param("search")String search);
    /*好品推荐*/
    List<Goods> goodProductsRank(@Param("search")String search);

    /**
     * 根据id查询商品
     * @param id
     * @return
     */
  Goods getByIdGoods(Integer id);

    /**
     * 按类型查询
     * @param item
     * @return
     */

    List<Goods> getByItemGoods(@Param("item") String item);

    /**
     * 按价钱排序
     * @return
     */
    List<Goods> getByPrice();

    /**
     * 按浏览量排序
     * @return
     */
    List<Goods> getByView();

    List<Goods> findGoodsByCondition(Goods goods);

    /**
     *
     * @param typeName 商品类型
     * @param sortWay 排序方式
     * @param search 查询条件
     * @return 新品满足条件的Goods
     */
    List<Goods> getGoodsByCondition(@Param("typeName") String typeName, @Param("sortWay") String sortWay,@Param("search")String search);

    /**
     *
     @param typeName 商品类型
      * @param sortWay 排序方式
     * @param search 查询条件
     * @return 所有满足条件的Goods
     */
    List<Goods> getAllGoodsByConditionAndPage(@Param("typeName") String typeName, @Param("sortWay") String sortWay,@Param("search")String search);

    /**
     *
     @param typeName 商品类型
      * @param sortWay 排序方式
     * @param search 查询条件
     * @return 热销满足条件的Goods
     */
    List<Goods> getGoodsHotByConditionAndPage(@Param("typeName") String typeName, @Param("sortWay") String sortWay,@Param("search")String search);

    /**
     *
     * 猜你喜欢
     */
    List<Goods> selectproductsliketest(ArrayList<Integer> pid);

    List<Goods> selectproductslike3();

    List<Goods> selectproductslike2();


    /**
     * 根据用户ID获得收藏商品
     * @param userId
     * @return
     */
    @Select(value = "SELECT g.* FROM collect c,goods g WHERE c.goodId =g.gid AND userId = #{userId}")
    List<Goods> getByUserId(@Param("userId") String userId);

    /**
     * 根据用户ID获得收藏商品
     * @param search
     * @param userId
     * @return
     */
    List<Goods> getCollectByUser(@Param("search") String search,@Param("userId") Integer userId);
}
